home *** CD-ROM | disk | FTP | other *** search
/ PCGUIA 127 / PC Guia 127.iso / Software / Produtividade / OpenOffice.org 2.0.1 / openofficeorg1.cab / main_transform.xsl < prev    next >
Extensible Markup Language  |  2005-10-06  |  34KB  |  964 lines

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3.  
  4. <!--***********************************************************************
  5.   This is the main transformation style sheet for transforming.
  6.   Only use with OOo 2.0
  7.   Owner: fpe@openoffice.org
  8.   =========================================================================
  9.   Changes Log
  10.     May 24 2004 Created
  11.     Aug 24 2004 Fixed for help2 CWS
  12.     Aug 27 2004 Added css link, fixed missing embed-mode for variable
  13.                 Removed width/height for images
  14.     Sep 03 2004 Modularized xsl, added some embedded modes
  15.     Oct 08 2004 Fixed bug wrong mode "embedded" for links
  16.                 Added embedded modes for embed and embedvar (for cascaded embeds)
  17.                 Added <p> tags around falsely embedded pars and vars
  18.     Dec 08 2004 #i38483#, fixed wrong handling of web links
  19.                 #i37377#, fixed missing usage of Database parameter for switching
  20.     Jan 04 2005 #i38905#, fixed buggy branding replacement template
  21.     Mar 17 2005 #i43972#, added language info to image URL, evaluate Language parameter
  22.                 evaluate new localize attribute in images
  23.     May 10 2005 #i48785#, fixed wrong setting of distrib variable
  24.     Aug 16 2005 workaround for #i53365#
  25.     Aug 19 2005 fixed missing list processing in embedded sections
  26.     Aug 19 2005 #i53535#, fixed wrong handling of Database parameter
  27. ***********************************************************************//-->
  28.  
  29. <!--
  30.  
  31.     OpenOffice.org - a multi-platform office productivity suite
  32.  
  33.     $RCSfile: main_transform.xsl,v $
  34.  
  35.     $Revision: 1.15 $
  36.  
  37.     last change: $Author: kz $ $Date: 2005/10/05 11:39:25 $
  38.  
  39.     The Contents of this file are made available subject to
  40.     the terms of GNU Lesser General Public License Version 2.1.
  41.  
  42.  
  43.       GNU Lesser General Public License Version 2.1
  44.       =============================================
  45.       Copyright 2005 by Sun Microsystems, Inc.
  46.       901 San Antonio Road, Palo Alto, CA 94303, USA
  47.  
  48.       This library is free software; you can redistribute it and/or
  49.       modify it under the terms of the GNU Lesser General Public
  50.       License version 2.1, as published by the Free Software Foundation.
  51.  
  52.       This library is distributed in the hope that it will be useful,
  53.       but WITHOUT ANY WARRANTY; without even the implied warranty of
  54.       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  55.       Lesser General Public License for more details.
  56.  
  57.       You should have received a copy of the GNU Lesser General Public
  58.       License along with this library; if not, write to the Free Software
  59.       Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  60.       MA  02111-1307  USA
  61.  
  62. -->
  63.  
  64. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  65.  
  66. <xsl:output indent="yes" method="html"/>
  67.  
  68. <!--
  69. ############################
  70. # Variables and Parameters #
  71. ############################
  72. //-->
  73.  
  74. <!-- General Usage -->
  75. <xsl:variable name="am" select="'&'"/>
  76. <xsl:variable name="sl" select="'/'"/>
  77. <xsl:variable name="qt" select="'"'"/>
  78.  
  79. <!-- generic Icon alt text -->
  80. <xsl:variable name="alttext" select="'text/shared/00/icon_alt.xhp'"/>
  81.  
  82. <!-- For calculating pixel sizes -->
  83. <xsl:variable name="dpi" select="'96'"/>
  84. <xsl:variable name="dpcm" select="'38'"/>
  85.  
  86. <!-- Product brand variables used in the help files -->
  87. <xsl:variable name="brand1" select="'$[officename]'"/>
  88. <xsl:variable name="brand2" select="'$[officeversion]'"/>
  89. <xsl:variable name="brand3" select="'%PRODUCTNAME'"/>
  90. <xsl:variable name="brand4" select="'%PRODUCTVERSION'"/>
  91.  
  92. <!-- meta data variables from the help file -->
  93. <xsl:variable name="filename" select="/helpdocument/meta/topic/filename"/>
  94. <xsl:variable name="topic_id" select="/helpdocument/meta/topic/@id"/>
  95. <xsl:variable name="topic_status" select="/helpdocument/meta/topic/@status"/>
  96. <xsl:variable name="title" select="/helpdocument/meta/topic/title"/>
  97. <xsl:variable name="doclang" select="/helpdocument/meta/topic/title/@xml-lang"/>
  98.  
  99. <!-- Module and the corresponding switching values-->
  100. <xsl:param name="Database" select="'swriter'"/>
  101. <xsl:variable name="module" select="$Database"/>
  102. <xsl:variable name="appl">
  103.     <xsl:choose>
  104.         <xsl:when test="$module = 'swriter'"><xsl:value-of select="'WRITER'"/></xsl:when>
  105.         <xsl:when test="$module = 'scalc'"><xsl:value-of select="'CALC'"/></xsl:when>
  106.         <xsl:when test="$module = 'sdraw'"><xsl:value-of select="'DRAW'"/></xsl:when>
  107.         <xsl:when test="$module = 'simpress'"><xsl:value-of select="'IMPRESS'"/></xsl:when>
  108.         <xsl:when test="$module = 'schart'"><xsl:value-of select="'CHART'"/></xsl:when>
  109.         <xsl:when test="$module = 'sbasic'"><xsl:value-of select="'BASIC'"/></xsl:when>
  110.         <xsl:when test="$module = 'smath'"><xsl:value-of select="'MATH'"/></xsl:when>
  111.     </xsl:choose>
  112. </xsl:variable>
  113.  
  114. <!-- the other parameters given by the help caller -->
  115. <xsl:param name="System" select="'WIN'"/>
  116. <xsl:param name="productname" select="'Office'"/>
  117. <xsl:param name="productversion" select="''"/>
  118. <xsl:variable name="pversion">
  119.     <xsl:value-of select="translate($productversion,' ','')"/>
  120. </xsl:variable>
  121. <!-- this is were the images are -->
  122. <xsl:param name="imgrepos" select="''"/>
  123. <xsl:param name="Id" />
  124. <!-- (lame) distinction between OS and Commercial -->
  125. <xsl:param name="distrib">
  126.     <xsl:choose>
  127.         <xsl:when test="starts-with($productname,'OpenOffice')">
  128.             <xsl:value-of select="'OpenSource'"/>
  129.         </xsl:when>
  130.         <xsl:otherwise>
  131.             <xsl:value-of select="'COMMERCIAL'"/>
  132.         </xsl:otherwise>
  133.     </xsl:choose>
  134. </xsl:param>
  135. <xsl:param name="Language" select="'en-US'"/>
  136. <xsl:variable name="lang" select="$Language"/>
  137.  
  138.  
  139.  
  140. <!-- parts of help and image urls -->
  141. <xsl:variable name="help_url_prefix" select="'vnd.sun.star.help://'"/>
  142. <xsl:variable name="img_url_prefix" select="concat('vnd.sun.star.pkg://',$imgrepos,'/')"/>
  143. <xsl:variable name="urlpost" select="concat('?Language=',$lang,$am,'System=',$System,$am,'UseDB=no')"/>
  144. <xsl:variable name="urlpre" select="$help_url_prefix" /> 
  145. <xsl:variable name="linkprefix" select="$urlpre"/>
  146. <xsl:variable name="linkpostfix" select="$urlpost"/>
  147.  
  148. <xsl:variable name="css" select="'default.css'"/>
  149.  
  150. <!-- images for notes, tips and warnings -->
  151. <xsl:variable name="note_img" select="concat($img_url_prefix,'res/helpimg/note.png')"/>
  152. <xsl:variable name="tip_img" select="concat($img_url_prefix,'res/helpimg/tip.png')"/>
  153. <xsl:variable name="warning_img" select="concat($img_url_prefix,'res/helpimg/warning.png')"/>
  154.  
  155. <!--
  156. #############
  157. # Templates #
  158. #############
  159. //-->
  160.  
  161. <!-- Create the document skeleton -->
  162. <xsl:template match="/">
  163.     <xsl:variable name="csslink" select="concat($urlpre,'/',$urlpost)"/>
  164.     <html>
  165.         <head>
  166.             <title><xsl:value-of select="$title"/></title>
  167.             <link href="{$csslink}" rel="Stylesheet" type="text/css" /> <!-- stylesheet link -->
  168.           <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
  169.         </head>
  170.         <body lang="{$lang}">
  171.             <xsl:apply-templates select="/helpdocument/body"/>
  172.         </body>
  173.     </html>
  174. </xsl:template>
  175.  
  176. <!-- AHELP -->
  177. <xsl:template match="ahelp">
  178.     <xsl:if test="not(@visibility='hidden')"><span class="avis"><xsl:apply-templates /></span></xsl:if>
  179. </xsl:template>
  180.  
  181. <!-- ALT -->
  182. <xsl:template match="alt"/>
  183.  
  184. <!-- BOOKMARK -->
  185. <xsl:template match="bookmark">
  186.     <a name="{@id}"></a>
  187.     <xsl:choose>
  188.         <xsl:when test="starts-with(@branch,'hid')" />
  189.         <xsl:otherwise><xsl:apply-templates /></xsl:otherwise>
  190.     </xsl:choose>
  191. </xsl:template>
  192. <xsl:template match="bookmark" mode="embedded" />
  193.  
  194. <!-- BOOKMARK_VALUE -->
  195. <xsl:template match="bookmark_value" />
  196.  
  197. <!-- BR -->
  198. <xsl:template match="br"><br /></xsl:template>
  199.  
  200. <!-- CAPTION -->
  201. <xsl:template match="caption" />
  202.  
  203. <!-- CASE -->
  204. <xsl:template match="case"><xsl:call-template name="insertcase" /></xsl:template>
  205. <xsl:template match="case" mode="embedded">
  206.     <xsl:call-template name="insertcase">
  207.         <xsl:with-param name="embedded" select="'yes'"/>
  208.     </xsl:call-template>
  209. </xsl:template>
  210.  
  211. <!-- CASEINLINE -->
  212. <xsl:template match="caseinline"><xsl:call-template name="insertcase" /></xsl:template>
  213. <xsl:template match="caseinline" mode="embedded">
  214.     <xsl:call-template name="insertcase">
  215.         <xsl:with-param name="embedded" select="'yes'"/>
  216.     </xsl:call-template>
  217. </xsl:template>
  218.  
  219. <!-- COMMENT -->
  220. <xsl:template match="comment" />
  221. <xsl:template match="comment" mode="embedded"/>
  222.  
  223. <!-- CREATED -->
  224. <xsl:template match="created" />
  225.  
  226. <!-- DEFAULT -->
  227. <xsl:template match="default"><xsl:call-template name="insertdefault" /></xsl:template>
  228. <xsl:template match="default" mode="embedded">
  229.     <xsl:call-template name="insertdefault">
  230.         <xsl:with-param name="embedded" select="'yes'"/>
  231.     </xsl:call-template>
  232. </xsl:template>
  233.  
  234. <!-- DEFAULTINLINE -->
  235. <xsl:template match="defaultinline"><xsl:call-template name="insertdefault" /></xsl:template>
  236. <xsl:template match="defaultinline" mode="embedded">
  237.     <xsl:call-template name="insertdefault">
  238.         <xsl:with-param name="embedded" select="'yes'"/>
  239.     </xsl:call-template>
  240. </xsl:template>
  241.  
  242. <!-- EMBED -->
  243. <xsl:template match="embed"><xsl:call-template name="resolveembed"/></xsl:template>
  244. <xsl:template match="embed" mode="embedded"><xsl:call-template name="resolveembed"/></xsl:template>
  245.  
  246. <!-- EMBEDVAR -->
  247. <xsl:template match="embedvar"><xsl:call-template name="resolveembedvar"/></xsl:template>
  248. <xsl:template match="embedvar" mode="embedded"><xsl:call-template name="resolveembedvar"/></xsl:template>
  249.  
  250. <!-- EMPH -->
  251. <xsl:template match="emph">
  252.     <span class="emph"><xsl:apply-templates /></span>
  253. </xsl:template>
  254. <xsl:template match="emph" mode="embedded">
  255.     <span class="emph"><xsl:apply-templates /></span>
  256. </xsl:template>
  257.  
  258. <!-- FILENAME -->
  259. <xsl:template match="filename" />
  260.  
  261. <!-- HISTORY -->
  262. <xsl:template match="history" />
  263.  
  264. <!-- IMAGE -->
  265. <xsl:template match="image"><xsl:call-template name="insertimage"/></xsl:template>
  266. <xsl:template match="image" mode="embedded"><xsl:call-template name="insertimage"/></xsl:template>
  267.  
  268. <!-- ITEM -->
  269. <xsl:template match="item"><span class="{@type}"><xsl:apply-templates /></span></xsl:template>
  270. <xsl:template match="item" mode="embedded"><span class="{@type}"><xsl:apply-templates /></span></xsl:template>
  271.  
  272. <!-- LASTEDITED -->
  273. <xsl:template match="lastedited" />
  274.  
  275. <!-- LINK -->
  276. <xsl:template match="link">
  277.     <xsl:choose> <!-- don't insert the heading link to itself -->
  278.         <xsl:when test="(concat('/',@href) = /helpdocument/meta/topic/filename) or (@href = /helpdocument/meta/topic/filename)">
  279.             <xsl:apply-templates />
  280.         </xsl:when>
  281.         <xsl:when test="contains(child::embedvar/@href,'/00/00000004.xhp#wie')"> <!-- special treatment of howtoget links -->
  282.             <xsl:call-template name="insert_howtoget">
  283.                 <xsl:with-param name="linkhref" select="@href"/>
  284.             </xsl:call-template>
  285.         </xsl:when>
  286.         <xsl:otherwise>
  287.             <xsl:call-template name="createlink" /> 
  288.         </xsl:otherwise>
  289.     </xsl:choose>
  290. </xsl:template>
  291. <xsl:template match="link" mode="embedded">
  292.     <xsl:call-template name="createlink"/>
  293. </xsl:template>
  294.  
  295. <!-- LIST -->
  296. <xsl:template match="list">
  297.     <xsl:choose>
  298.         <xsl:when test="@type='ordered'">
  299.             <ol>
  300.                 <xsl:if test="@startwith">
  301.                     <xsl:attribute name="start"><xsl:value-of select="@startwith"/></xsl:attribute>
  302.                 </xsl:if>
  303.                 <xsl:apply-templates />
  304.             </ol>
  305.         </xsl:when>
  306.         <xsl:otherwise>
  307.             <ul><xsl:apply-templates /></ul>
  308.         </xsl:otherwise>
  309.     </xsl:choose>
  310. </xsl:template>
  311.  
  312. <xsl:template match="list" mode="embedded">
  313.     <xsl:choose>
  314.         <xsl:when test="@type='ordered'">
  315.             <ol>
  316.                 <xsl:if test="@startwith">
  317.                     <xsl:attribute name="start"><xsl:value-of select="@startwith"/></xsl:attribute>
  318.                 </xsl:if>
  319.                 <xsl:apply-templates mode="embedded"/>
  320.             </ol>
  321.         </xsl:when>
  322.         <xsl:otherwise>
  323.             <ul><xsl:apply-templates mode="embedded"/></ul>
  324.         </xsl:otherwise>
  325.     </xsl:choose>
  326. </xsl:template>
  327.  
  328. <!-- LISTITEM -->
  329. <xsl:template match="listitem">
  330.     <li><xsl:apply-templates /></li>
  331. </xsl:template>
  332.  
  333. <xsl:template match="listitem" mode="embedded">
  334.     <li><xsl:apply-templates mode="embedded"/></li>
  335. </xsl:template>
  336.  
  337. <!-- META, SEE HEADER -->
  338. <xsl:template match="meta" />
  339.  
  340. <!-- OBJECT (UNUSED) -->
  341. <xsl:template match="object" />
  342.  
  343. <!-- PARAGRAPH -->
  344. <xsl:template match="paragraph">
  345.     <xsl:choose>
  346.         
  347.         <xsl:when test="@role='heading'">
  348.             <xsl:call-template name="insertheading">
  349.                 <xsl:with-param name="level" select="@level"/>
  350.             </xsl:call-template>
  351.         </xsl:when>
  352.         
  353.         <xsl:when test="contains(' note warning tip ',@role)">
  354.             <xsl:call-template name="insertnote">
  355.                 <xsl:with-param name="type" select="@role" />
  356.             </xsl:call-template>
  357.         </xsl:when>
  358.         
  359.         <xsl:when test="contains(descendant::embedvar/@href,'/00/00000004.xhp#wie')"> <!-- special treatment of howtoget links -->
  360.             <xsl:apply-templates />
  361.         </xsl:when>        
  362.         
  363.         <xsl:otherwise>
  364.             <xsl:call-template name="insertpara" />
  365.         </xsl:otherwise>
  366.     
  367.     </xsl:choose>
  368. </xsl:template>
  369.  
  370. <xsl:template match="paragraph" mode="embedded">
  371.         <xsl:choose>
  372.         
  373.         <xsl:when test="@role='heading'">    <!-- increase the level of headings that are embedded -->
  374.         <!-- 
  375.            The internal sablotron processor does not seem to support the number function.
  376.              Therefore, we need a workaround for
  377.              <xsl:variable name="level"><xsl:value-of select="number(@level)+1"/></xsl:variable>
  378.         -->
  379.             <xsl:variable name="newlevel">
  380.                 <xsl:choose>
  381.                     <xsl:when test="@level='1'"><xsl:value-of select="'2'"/></xsl:when>
  382.                     <xsl:when test="@level='2'"><xsl:value-of select="'2'"/></xsl:when>
  383.                     <xsl:when test="@level='3'"><xsl:value-of select="'3'"/></xsl:when>
  384.                     <xsl:when test="@level='4'"><xsl:value-of select="'4'"/></xsl:when>
  385.                     <xsl:when test="@level='5'"><xsl:value-of select="'5'"/></xsl:when>
  386.                 </xsl:choose>
  387.             </xsl:variable>
  388.             
  389.             <xsl:call-template name="insertheading">
  390.                 <xsl:with-param name="level" select="$newlevel"/>
  391.                 <xsl:with-param name="embedded" select="'yes'"/>
  392.             </xsl:call-template>
  393.         </xsl:when>
  394.         
  395.         <xsl:when test="contains(' note warning tip ',@role)">
  396.             <xsl:call-template name="insertnote">
  397.                 <xsl:with-param name="type" select="@role" />
  398.             </xsl:call-template>
  399.         </xsl:when>
  400.         
  401.         <xsl:when test="contains(descendant::embedvar/@href,'/00/00000004.xhp#wie')"> <!-- special treatment of howtoget links -->
  402.             <xsl:apply-templates />
  403.         </xsl:when>        
  404.         
  405.         <xsl:otherwise>
  406.             <xsl:call-template name="insertpara" />
  407.         </xsl:otherwise>
  408.         
  409.     </xsl:choose>
  410. </xsl:template>
  411.  
  412.  
  413. <!-- SECTION -->
  414. <xsl:template match="section">
  415.     <a name="{@id}"></a>
  416.  
  417.         <xsl:choose>
  418.             
  419.             <xsl:when test="@id='relatedtopics'">
  420.                 <div class="relatedtopics">
  421.                     <xsl:variable name="href"><xsl:value-of select="concat($urlpre,'shared/text/shared/00/00000004.xhp',$urlpost)"/></xsl:variable>
  422.                     <xsl:variable name="anchor"><xsl:value-of select="'related'"/></xsl:variable>
  423.                     <xsl:variable name="doc" select="document($href)"/>
  424.                     <p class="related">
  425.                         <xsl:apply-templates select="$doc//variable[@id=$anchor]"/>
  426.                     </p>
  427.                     <div class="relatedbody">
  428.                         <xsl:apply-templates />
  429.                     </div>
  430.                 </div>
  431.             </xsl:when>
  432.             
  433.             <xsl:when test="@id='howtoget'">
  434.                 <xsl:call-template name="insert_howtoget" />
  435.             </xsl:when>
  436.             
  437.             <xsl:otherwise>
  438.                         <xsl:apply-templates/>
  439.             </xsl:otherwise>
  440.         
  441.         </xsl:choose>
  442.  
  443. </xsl:template>
  444.  
  445.  
  446. <!-- SECTION -->
  447. <xsl:template match="section" mode="embedded">
  448.     <a name="{@id}"></a>
  449.     <xsl:apply-templates mode="embedded"/>
  450. </xsl:template>
  451.  
  452. <!-- SORT -->
  453. <xsl:template match="sort" >
  454.     <xsl:apply-templates><xsl:sort select="descendant::paragraph"/></xsl:apply-templates>
  455. </xsl:template>
  456. <xsl:template match="sort" mode="embedded">
  457.     <xsl:apply-templates><xsl:sort select="descendant::paragraph"/></xsl:apply-templates>
  458. </xsl:template>
  459.  
  460. <!-- SWITCH -->
  461. <xsl:template match="switch"><xsl:apply-templates /></xsl:template>
  462. <xsl:template match="switch" mode="embedded"><xsl:apply-templates /></xsl:template>
  463.  
  464. <!-- SWITCHINLINE -->
  465. <xsl:template match="switchinline"><xsl:apply-templates /></xsl:template>
  466. <xsl:template match="switchinline" mode="embedded"><xsl:apply-templates mode="embedded"/></xsl:template>
  467.  
  468. <!-- TABLE -->
  469. <xsl:template match="table"><xsl:call-template name="inserttable"/></xsl:template>
  470. <xsl:template match="table" mode="embedded"><xsl:call-template name="inserttable"/></xsl:template>
  471.  
  472. <!-- TABLECELL -->
  473. <xsl:template match="tablecell"><td valign="top"><xsl:apply-templates /></td></xsl:template>
  474. <xsl:template match="tablecell" mode="icontable"><td valign="top"><xsl:apply-templates/></td></xsl:template>
  475. <xsl:template match="tablecell" mode="embedded"><td valign="top"><xsl:apply-templates mode="embedded"/></td></xsl:template>
  476.  
  477. <!-- TABLEROW -->
  478. <xsl:template match="tablerow"><tr><xsl:apply-templates /></tr></xsl:template>
  479. <xsl:template match="tablerow" mode="icontable"><tr><xsl:apply-templates mode="icontable"/></tr></xsl:template>
  480. <xsl:template match="tablerow" mode="embedded"><tr><xsl:apply-templates mode="embedded"/></tr></xsl:template>
  481.  
  482. <!-- TITLE -->
  483. <xsl:template match="title"/>
  484.  
  485. <!-- TOPIC -->
  486. <xsl:template match="topic"/>
  487.  
  488. <!-- VARIABLE -->
  489. <xsl:template match="variable"><a name="{@id}"></a><xsl:apply-templates /></xsl:template>
  490. <xsl:template match="variable" mode="embedded"><a name="{@id}"></a><xsl:apply-templates mode="embedded"/></xsl:template>
  491.  
  492. <xsl:template match="text()">
  493.     <xsl:call-template name="brand">
  494.         <xsl:with-param name="string"><xsl:value-of select="."/></xsl:with-param>
  495.     </xsl:call-template>
  496. </xsl:template>
  497.  
  498. <xsl:template match="text()" mode="embedded">
  499.     <xsl:call-template name="brand">
  500.         <xsl:with-param name="string"><xsl:value-of select="."/></xsl:with-param>
  501.     </xsl:call-template>
  502. </xsl:template>
  503.  
  504. <!-- In case of missing help files -->
  505. <xsl:template match="help-id-missing"><xsl:value-of select="$Id"/></xsl:template>
  506.  
  507. <!-- 
  508. ###################
  509. # NAMED TEMPLATES #
  510. ###################
  511. //-->
  512.  
  513. <!-- Branding -->
  514. <xsl:template name="brand" >
  515.     <xsl:param name="string"/>
  516.     
  517.     <xsl:choose>
  518.         
  519.         <xsl:when test="contains($string,$brand1)">
  520.            <xsl:variable name="newstr">
  521.                 <xsl:value-of select="substring-before($string,$brand1)"/>
  522.                 <xsl:value-of select="$productname"/>
  523.                 <xsl:value-of select="substring-after($string,$brand1)"/>
  524.            </xsl:variable>
  525.             <xsl:call-template name="brand">
  526.                 <xsl:with-param name="string" select="$newstr"/>
  527.             </xsl:call-template>
  528.         </xsl:when>
  529.         
  530.         <xsl:when test="contains($string,$brand2)">
  531.             <xsl:variable name="newstr">
  532.                 <xsl:value-of select="substring-before($string,$brand2)"/>
  533.                 <xsl:value-of select="$pversion"/>
  534.                 <xsl:value-of select="substring-after($string,$brand2)"/>
  535.            </xsl:variable>
  536.             <xsl:call-template name="brand">
  537.                 <xsl:with-param name="string" select="$newstr"/>
  538.             </xsl:call-template>
  539.         </xsl:when>
  540.         
  541.         <xsl:when test="contains($string,$brand3)">
  542.             <xsl:variable name="newstr">
  543.                 <xsl:value-of select="substring-before($string,$brand3)"/>
  544.                 <xsl:value-of select="$productname"/>
  545.                 <xsl:value-of select="substring-after($string,$brand3)"/>
  546.            </xsl:variable>
  547.             <xsl:call-template name="brand">
  548.                 <xsl:with-param name="string" select="$newstr"/>
  549.             </xsl:call-template>
  550.         </xsl:when>
  551.         
  552.         <xsl:when test="contains($string,$brand4)">
  553.                 <xsl:variable name="newstr">
  554.                 <xsl:value-of select="substring-before($string,$brand4)"/>
  555.                 <xsl:value-of select="$pversion"/>
  556.                 <xsl:value-of select="substring-after($string,$brand4)"/>
  557.            </xsl:variable>
  558.             <xsl:call-template name="brand">
  559.                 <xsl:with-param name="string" select="$newstr"/>
  560.             </xsl:call-template>
  561.         </xsl:when>
  562.         
  563.         <xsl:otherwise>
  564.             <xsl:value-of select="$string"/>
  565.         </xsl:otherwise>
  566.     </xsl:choose> 
  567.     
  568. </xsl:template>
  569.  
  570.  
  571. <!-- Insert Paragraph -->
  572. <xsl:template name="insertpara">
  573.     <xsl:variable name="role">
  574.         <xsl:choose>
  575.             <xsl:when test="ancestor::table">
  576.                 <xsl:value-of select="concat(@role,'intable')"/>
  577.             </xsl:when>
  578.             <xsl:otherwise>
  579.                 <xsl:value-of select="@role"/>
  580.             </xsl:otherwise>
  581.         </xsl:choose>
  582.     </xsl:variable>
  583.     <p class="{$role}"><xsl:apply-templates /></p>
  584. </xsl:template>
  585.  
  586. <!-- Insert "How to get Link" -->
  587. <xsl:template name="insert_howtoget">
  588.     <xsl:param name="linkhref" />
  589.     <xsl:variable name="archive" select="'shared'"/>
  590.     <xsl:variable name="tmp_href"><xsl:value-of select="concat($urlpre,'shared/text/shared/00/00000004.xhp',$urlpost)"/></xsl:variable>    
  591.     <xsl:variable name="tmp_doc" select="document($tmp_href)"/>
  592.     <table class="howtoget" width="100%" border="1" cellpadding="3" cellspacing="0">
  593.         <tr>
  594.             <td>
  595.                 <p class="howtogetheader"><xsl:apply-templates select="$tmp_doc//variable[@id='wie']"/></p>
  596.                 <div class="howtogetbody">
  597.                 <xsl:choose>
  598.                     <xsl:when test="$linkhref = ''"> <!-- new style -->
  599.                         <xsl:apply-templates/>
  600.                     </xsl:when>
  601.                     <xsl:otherwise> <!-- old style -->
  602.                         <xsl:variable name="archive1"><xsl:value-of select="concat(substring-before(substring-after($linkhref,'text/'),'/'),'/')"/></xsl:variable>
  603.                         <xsl:variable name="href"><xsl:value-of select="concat($urlpre,$archive1,substring-before($linkhref,'#'),$urlpost)"/></xsl:variable>
  604.                         <xsl:variable name="anc"><xsl:value-of select="substring-after($linkhref,'#')"/></xsl:variable>
  605.                         <xsl:variable name="docum" select="document($href)"/>
  606.                         
  607.                         <xsl:call-template name="insertembed">
  608.                             <xsl:with-param name="doc" select="$docum" />
  609.                             <xsl:with-param name="anchor" select="$anc" />
  610.                         </xsl:call-template>
  611.  
  612.                     </xsl:otherwise>
  613.                 </xsl:choose>                
  614.                 </div>
  615.             </td>
  616.         </tr>
  617.     </table>
  618.     <br/>
  619. </xsl:template>
  620.  
  621. <!-- Create a link -->
  622. <xsl:template name="createlink">
  623. <xsl:variable name="archive"><xsl:value-of select="concat(substring-before(substring-after(@href,'text/'),'/'),'/')"/></xsl:variable>
  624. <xsl:variable name="dbpostfix"><xsl:call-template name="createDBpostfix"><xsl:with-param name="archive" select="$archive"/></xsl:call-template></xsl:variable>
  625.     <xsl:choose>
  626.         <xsl:when test="contains(@href,'#')">
  627.             <xsl:variable name="anchor"><xsl:value-of select="concat('#',substring-after(@href,'#'))"/></xsl:variable>
  628.             <xsl:variable name="href"><xsl:value-of select="concat($linkprefix,$archive,substring-before(@href,'#'),$linkpostfix,$dbpostfix,$anchor)"/></xsl:variable>
  629.             <a href="{$href}"><xsl:apply-templates /></a>
  630.         </xsl:when>
  631.         <xsl:when test="starts-with(@href,'http://')">  <!-- web links -->
  632.             <a href="{@href}"><xsl:apply-templates /></a>
  633.         </xsl:when>
  634.         <xsl:otherwise>
  635.             <xsl:variable name="href"><xsl:value-of select="concat($linkprefix,$archive,@href,$linkpostfix,$dbpostfix)"/></xsl:variable>
  636.             <a href="{$href}"><xsl:apply-templates /></a>
  637.         </xsl:otherwise>
  638.     </xsl:choose>
  639. </xsl:template>
  640.  
  641. <!-- Insert Note, Warning, or Tip -->
  642. <xsl:template name="insertnote">
  643.     <xsl:param name="type" /> <!-- note, tip, or warning -->
  644.     <xsl:variable name="imgsrc">
  645.         <xsl:choose>
  646.             <xsl:when test="$type='note'"><xsl:value-of select="$note_img"/></xsl:when>
  647.             <xsl:when test="$type='tip'"><xsl:value-of select="$tip_img"/></xsl:when>
  648.             <xsl:when test="$type='warning'"><xsl:value-of select="$warning_img"/></xsl:when>
  649.         </xsl:choose>
  650.     </xsl:variable>
  651.     <xsl:variable name="dbpostfix"><xsl:call-template name="createDBpostfix"><xsl:with-param name="archive" select="'shared'"/></xsl:call-template></xsl:variable>
  652.     <xsl:variable name="alt">
  653.         <xsl:variable name="href"><xsl:value-of select="concat($urlpre,'shared/',$alttext,$urlpost,$dbpostfix)"/></xsl:variable>
  654.         <xsl:variable name="anchor"><xsl:value-of select="concat('alt_',$type)"/></xsl:variable>
  655.         <xsl:variable name="doc" select="document($href)"/>
  656.         <xsl:apply-templates select="$doc//variable[@id=$anchor]" mode="embedded"/>
  657.     </xsl:variable>
  658.     <div class="{$type}">
  659.         <table border="0" class="{$type}" cellspacing="0" cellpadding="5">
  660.             <tr>
  661.                 <td><img src="{$imgsrc}" alt="{$alt}" title="{$alt}"/></td>
  662.                 <td><xsl:apply-templates /></td>
  663.             </tr>
  664.         </table>
  665.     </div>
  666.     <br/>
  667. </xsl:template>
  668.  
  669. <!-- Insert a heading -->
  670. <xsl:template name="insertheading">
  671.     <xsl:param name="level" />
  672.     <xsl:param name="embedded" />
  673.     <xsl:text disable-output-escaping="yes"><h</xsl:text><xsl:value-of select="$level"/><xsl:text disable-output-escaping="yes">></xsl:text>
  674.         <xsl:choose>
  675.             <xsl:when test="$embedded = 'yes'">
  676.                 <xsl:apply-templates mode="embedded"/>
  677.             </xsl:when>
  678.             <xsl:otherwise>
  679.                 <xsl:apply-templates />
  680.             </xsl:otherwise>
  681.         </xsl:choose>
  682.     <xsl:text disable-output-escaping="yes"></h</xsl:text><xsl:value-of select="$level"/><xsl:text disable-output-escaping="yes">></xsl:text>
  683. </xsl:template>
  684.  
  685. <!-- Evaluate a case or caseinline switch -->
  686. <xsl:template name="insertcase">
  687.     <xsl:param name="embedded" />
  688.     <xsl:choose>
  689.         <xsl:when test="parent::switch[@select='sys'] or parent::switchinline[@select='sys']">
  690.             <xsl:if test="@select = $System">
  691.                 <xsl:choose>
  692.                     <xsl:when test="$embedded = 'yes'">
  693.                         <xsl:apply-templates mode="embedded"/>
  694.                     </xsl:when>
  695.                     <xsl:otherwise>
  696.                         <xsl:apply-templates />
  697.                     </xsl:otherwise>
  698.                 </xsl:choose>
  699.             </xsl:if>
  700.         </xsl:when>
  701.         <xsl:when test="parent::switch[@select='appl'] or parent::switchinline[@select='appl']">
  702.             <xsl:if test="@select = $appl">
  703.                 <xsl:choose>
  704.                     <xsl:when test="$embedded = 'yes'">
  705.                         <xsl:apply-templates mode="embedded"/>
  706.                     </xsl:when>
  707.                     <xsl:otherwise>
  708.                         <xsl:apply-templates />
  709.                     </xsl:otherwise>
  710.                 </xsl:choose>
  711.             </xsl:if>
  712.         </xsl:when>
  713.         <xsl:when test="parent::switch[@select='distrib'] or parent::switchinline[@select='distrib']">
  714.             <xsl:if test="@select = $distrib">
  715.                 <xsl:choose>
  716.                     <xsl:when test="$embedded = 'yes'">
  717.                         <xsl:apply-templates mode="embedded"/>
  718.                     </xsl:when>
  719.                     <xsl:otherwise>
  720.                         <xsl:apply-templates />
  721.                     </xsl:otherwise>
  722.                 </xsl:choose>
  723.             </xsl:if>
  724.         </xsl:when>
  725.     </xsl:choose>
  726. </xsl:template>
  727.  
  728. <!-- Evaluate a default or defaultinline switch -->
  729. <xsl:template name="insertdefault">
  730.     <xsl:param name="embedded" />
  731.     
  732.     <xsl:choose>
  733.         <xsl:when test="parent::switch[@select='sys'] or parent::switchinline[@select='sys']">
  734.             <xsl:if test="not(../child::case[@select=$System]) and not(../child::caseinline[@select=$System])">
  735.                 <xsl:choose>
  736.                     <xsl:when test="$embedded = 'yes'">
  737.                         <xsl:apply-templates mode="embedded"/>
  738.                     </xsl:when>
  739.                     <xsl:otherwise>
  740.                         <xsl:apply-templates />
  741.                     </xsl:otherwise>
  742.                 </xsl:choose>
  743.             </xsl:if>
  744.         </xsl:when>
  745.         <xsl:when test="parent::switch[@select='appl'] or parent::switchinline[@select='appl']">
  746.             <xsl:if test="not(../child::case[@select=$appl]) and not(../child::caseinline[@select=$appl])">
  747.                 <xsl:choose>
  748.                     <xsl:when test="$embedded = 'yes'">
  749.                         <xsl:apply-templates mode="embedded"/>
  750.                     </xsl:when>
  751.                     <xsl:otherwise>
  752.                         <xsl:apply-templates />
  753.                     </xsl:otherwise>
  754.                 </xsl:choose>
  755.             </xsl:if>
  756.         </xsl:when>
  757.         <xsl:when test="parent::switch[@select='distrib'] or parent::switchinline[@select='distrib']">
  758.             <xsl:if test="not(../child::case[@select=$distrib]) and not(../child::caseinline[@select=$distrib])">
  759.                 <xsl:choose>
  760.                     <xsl:when test="$embedded = 'yes'">
  761.                         <xsl:apply-templates mode="embedded"/>
  762.                     </xsl:when>
  763.                     <xsl:otherwise>
  764.                         <xsl:apply-templates />
  765.                     </xsl:otherwise>
  766.                 </xsl:choose>
  767.             </xsl:if>
  768.         </xsl:when>
  769.     </xsl:choose>
  770. </xsl:template>
  771.  
  772. <!-- evaluate embeds -->
  773. <xsl:template name="insertembed">
  774.     <xsl:param name="doc" />
  775.     <xsl:param name="anchor" />
  776.     <!-- different embed targets (also falsely used embed instead embedvar) -->
  777.     <xsl:choose>
  778.         <xsl:when test="$doc//section[@id=$anchor]"> <!-- first test for a section of that name -->
  779.             <xsl:apply-templates select="$doc//section[@id=$anchor]" mode="embedded"/>
  780.         </xsl:when>
  781.         <xsl:when test="$doc//paragraph[@id=$anchor]"> <!-- then test for a para of that name -->
  782.             <p class="embedded">
  783.                 <xsl:apply-templates select="$doc//paragraph[@id=$anchor]" mode="embedded"/>
  784.             </p>
  785.         </xsl:when>
  786.         <xsl:when test="$doc//variable[@id=$anchor]"> <!-- then test for a variable of that name -->
  787.             <p class="embedded">
  788.                 <xsl:apply-templates select="$doc//variable[@id=$anchor]" mode="embedded"/>
  789.             </p>
  790.         </xsl:when>
  791.         <xsl:otherwise> <!-- then give up -->
  792.             <p class="bug">D'oh! You found a bug (<xsl:value-of select="@href"/> not found).</p> 
  793.         </xsl:otherwise>
  794.     </xsl:choose>
  795. </xsl:template>
  796.  
  797. <!-- Insert an image -->
  798. <xsl:template name="insertimage">
  799.     
  800.     <xsl:variable name="fpath">
  801.         <xsl:call-template name="getfpath">
  802.             <xsl:with-param name="s"><xsl:value-of select="@src"/></xsl:with-param>
  803.         </xsl:call-template>
  804.     </xsl:variable>
  805.     
  806.     <xsl:variable name="fname">
  807.         <xsl:call-template name="getfname">
  808.             <xsl:with-param name="s"><xsl:value-of select="@src"/></xsl:with-param>
  809.         </xsl:call-template>
  810.     </xsl:variable>
  811.     
  812.     <xsl:variable name="src">
  813.         <xsl:choose>
  814.             <xsl:when test="(@localize='true') and not($lang='en-US')">
  815.                 <xsl:value-of select="concat($img_url_prefix,$fpath,$lang,'/',$fname)"/>
  816.             </xsl:when>
  817.             <xsl:otherwise>
  818.                 <xsl:value-of select="concat($img_url_prefix,$fpath,$fname)"/>
  819.             </xsl:otherwise>
  820.         </xsl:choose>
  821.     </xsl:variable>
  822.     
  823.     <!--<xsl:variable name="src"><xsl:value-of select="concat($img_url_prefix,@src)"/></xsl:variable>-->
  824.     <xsl:variable name="alt"><xsl:value-of select="./alt"/></xsl:variable>
  825.     <xsl:variable name="width" select="''"/> <!-- Images don't all have the correct size -->
  826.     <xsl:variable name="height" select="''"/><!-- Image don't all have the correct size -->
  827.     <img src="{$src}" alt="{$alt}" title="{$alt}">
  828.         <xsl:if test="not($width='')"><xsl:attribute name="width"><xsl:value-of select="$width"/></xsl:attribute></xsl:if>
  829.         <xsl:if test="not($height='')"><xsl:attribute name="height"><xsl:value-of select="$height"/></xsl:attribute></xsl:if>
  830.     </img>  
  831. </xsl:template>
  832.  
  833. <!-- Insert a Table -->
  834. <xsl:template name="inserttable">
  835.     <xsl:variable name="imgsrc">    <!-- see if we are in an image table -->
  836.         <xsl:value-of select="tablerow/tablecell[1]/paragraph[1]/image/@src"/>
  837.     </xsl:variable>
  838.     
  839.     <xsl:choose>
  840.         
  841.         <xsl:when test="count(descendant::tablecell)=1">
  842.             <table border="0" class="onecell" cellpadding="0" cellspacing="0">
  843.                 <xsl:apply-templates />
  844.          </table>
  845.         </xsl:when>
  846.         
  847.         <xsl:when test="descendant::tablecell[1]/descendant::image">
  848.             <table border="0" class="icontable" cellpadding="5" cellspacing="0">
  849.                 <xsl:apply-templates mode="icontable"/>
  850.          </table>
  851.         </xsl:when>
  852.         
  853.         <xsl:when test="@class='wide'">
  854.             <table border="1" class="{@class}" cellpadding="0" cellspacing="0" width="100%" >
  855.                 <xsl:apply-templates />
  856.          </table>
  857.         </xsl:when>
  858.         
  859.         <xsl:when test="not(@class='')">
  860.             <table border="1" class="{@class}" cellpadding="0" cellspacing="0" >
  861.                 <xsl:apply-templates />
  862.          </table>
  863.         </xsl:when>
  864.         
  865.         <xsl:otherwise>
  866.             <table border="1" class="border" cellpadding="0" cellspacing="0" >
  867.                 <xsl:apply-templates />
  868.          </table>
  869.         </xsl:otherwise>
  870.     </xsl:choose>
  871.     
  872.     <br/>
  873. </xsl:template>
  874.  
  875. <xsl:template name="resolveembed">
  876.     <div class="embedded">
  877.         <xsl:variable name="archive"><xsl:value-of select="concat(substring-before(substring-after(@href,'text/'),'/'),'/')"/></xsl:variable>
  878.         <xsl:variable name="dbpostfix"><xsl:call-template name="createDBpostfix"><xsl:with-param name="archive" select="$archive"/></xsl:call-template></xsl:variable>
  879.         <xsl:variable name="href"><xsl:value-of select="concat($urlpre,$archive,substring-before(@href,'#'),$urlpost,$dbpostfix)"/></xsl:variable>
  880.         <xsl:variable name="anc"><xsl:value-of select="substring-after(@href,'#')"/></xsl:variable>
  881.         <xsl:variable name="docum" select="document($href)"/>
  882.         
  883.         <xsl:call-template name="insertembed">
  884.             <xsl:with-param name="doc" select="$docum" />
  885.             <xsl:with-param name="anchor" select="$anc" />
  886.         </xsl:call-template>
  887.  
  888.     </div>
  889. </xsl:template>
  890.  
  891. <xsl:template name="resolveembedvar">
  892.     <xsl:if test="not(@href='text/shared/00/00000004.xhp#wie')"> <!-- special treatment if howtoget links -->
  893.         <xsl:variable name="archive"><xsl:value-of select="concat(substring-before(substring-after(@href,'text/'),'/'),'/')"/></xsl:variable>
  894.         <xsl:variable name="dbpostfix"><xsl:call-template name="createDBpostfix"><xsl:with-param name="archive" select="$archive"/></xsl:call-template></xsl:variable>
  895.         <xsl:variable name="href"><xsl:value-of select="concat($urlpre,$archive,substring-before(@href,'#'),$urlpost,$dbpostfix)"/></xsl:variable>
  896.         <xsl:variable name="anchor"><xsl:value-of select="substring-after(@href,'#')"/></xsl:variable>
  897.         <xsl:variable name="doc" select="document($href)"/>
  898.         <xsl:choose>
  899.             <xsl:when test="$doc//variable[@id=$anchor]"> <!-- test for a variable of that name -->
  900.                 <xsl:apply-templates select="$doc//variable[@id=$anchor]" mode="embedded"/>
  901.             </xsl:when>
  902.             <xsl:otherwise> <!-- or give up -->
  903.                 <span class="bug">[<xsl:value-of select="@href"/> not found].</span> 
  904.             </xsl:otherwise>
  905.         </xsl:choose>
  906.     </xsl:if>
  907. </xsl:template>
  908.  
  909. <!-- Apply -->
  910. <xsl:template name="apply">
  911.     <xsl:param name="embedded" />
  912.     <xsl:choose>
  913.         <xsl:when test="$embedded = 'yes'">
  914.             <xsl:apply-templates mode="embedded"/>
  915.         </xsl:when>
  916.         <xsl:otherwise>
  917.             <xsl:apply-templates />
  918.         </xsl:otherwise>
  919.     </xsl:choose>
  920. </xsl:template>
  921.  
  922. <xsl:template name="getfpath">
  923.     <xsl:param name="s"/>
  924.     <xsl:param name="p"/>
  925.     <xsl:choose>
  926.         <xsl:when test="contains($s,'/')">
  927.             <xsl:call-template name="getfpath">
  928.                 <xsl:with-param name="p"><xsl:value-of select="concat($p,substring-before($s,'/'),'/')"/></xsl:with-param>
  929.                 <xsl:with-param name="s"><xsl:value-of select="substring-after($s,'/')"/></xsl:with-param>
  930.             </xsl:call-template>
  931.         </xsl:when>
  932.         <xsl:otherwise>
  933.             <xsl:value-of select="$p"/>
  934.         </xsl:otherwise>
  935.     </xsl:choose>
  936. </xsl:template>
  937.  
  938. <xsl:template name="getfname">
  939.     <xsl:param name="s"/>
  940.     <xsl:choose>
  941.         <xsl:when test="contains($s,'/')">
  942.             <xsl:call-template name="getfname">
  943.                 <xsl:with-param name="s"><xsl:value-of select="substring-after($s,'/')"/></xsl:with-param>
  944.             </xsl:call-template>
  945.         </xsl:when>
  946.         <xsl:otherwise>
  947.             <xsl:value-of select="$s"/>
  948.         </xsl:otherwise>
  949.     </xsl:choose>
  950. </xsl:template>
  951.  
  952. <xsl:template name="createDBpostfix">
  953.     <xsl:param name="archive"/>
  954.     <xsl:variable name="newDB">
  955.         <xsl:choose>
  956.             <xsl:when test="(substring($archive,1,6) = 'shared') or (substring($archive,1,6) = 'schart')"><xsl:value-of select="$Database"/></xsl:when>
  957.             <xsl:otherwise><xsl:value-of select="substring-before($archive,'/')"/></xsl:otherwise>
  958.         </xsl:choose>
  959.     </xsl:variable>
  960.     <xsl:value-of select="concat($am,'DbPAR=',$newDB)"/>
  961. </xsl:template>
  962.  
  963. </xsl:stylesheet>
  964.